<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>InitPHP框架 PHP框架 - A PHP Framework - 框架执行流程</title>
<link href="static/common.css" type="text/css" rel="stylesheet" />
<meta name="keywords" content="php框架，国产php框架, initphp框架，MVC，分层体系" />
<meta name="description" content="initphp框架是一款国产php框架。initphp框架主要基于MVC模式，具备代码清晰，操作简单，功能齐全，开发快速，高效安全等特点，是您选择php框架的首选。" />
</head>
<body>
<div class="header">
  <div class="header_nav">InitPHP (A PHP Framework) 用户手册</div>
  <div class="header_div">
    <div class="header_title">第1章 1.4 框架执行流程</div>
    <div class="header_right"><a href="1_3.htm">上一页</a> <a href="1_5.htm">下一页</a> </div>
  </div>
</div>
<div class="title">框架执行流程： </div>
<p>-> 用户输入http://www.xxxx.com网址，通过HTTP请求index.php网站入口文件</p>
<pre id="PHP" class="prettyprint">
//网站入口文件index.php
define("APP_PATH", dirname(__FILE__)); 
header("Content-Type:text/html; charset=utf-8");   
require_once('../../initphp/initphp.php'); //导入配置文件-必须载入
require_once('conf/comm.conf.php'); //公用配置
InitPHP::init(); //框架初始化 
</pre>
<p>-> 入口文件主要调用InitPHP::init()来执行框架流程，导入dispatcher.init.php和run.init.php，先调用路由类，通过路由解析知道http需要请求哪一个控制器Controller文件中的Action方法，并且通过run.init.php框架运行类去执行Action方法。例如请求是：http//xxx.com/?c=user&a=register,则调用userController类中的register方法并执行</p>
<pre id="PHP" class="prettyprint">
//InitPHP框架initphp.php文件
/**
 * 【静态】运行InitPHP开发框架 - 框架运行核心函数
 * 1. 在index.php中实例化InitPHP启动类 InitPHP::init();
 * 2. 初始化网站路由，运行框架
 * 3. 全局使用方法：InitPHP::init(); 
 * @return object
 */
public static function init() { 
	try {
		require(INITPHP_PATH . '/init/dispatcher.init.php');
		require(INITPHP_PATH . '/init/run.init.php'); 
		$dispacher = InitPHP::loadclass('dispatcherInit'); 
		$dispacher->dispatcher();
		$run = InitPHP::loadclass('runInit');
		$run->run();
	} catch (exceptionInit $e) {
		$e->errorMessage();
	}
}
</pre>
<p>-> 假设http地址：http//xxx.com/?c=user&a=register，则调用并执行controller/userController.php文件，并且执行register()方法</p>
<img src="static/images/1_4_1.jpg" />
<pre id="PHP" class="prettyprint">
//项目web/controller/userController.php文件
/**
 * 用户控制器
 * @author zhuli 
 */
class userController extends Controller {
	
	public $initphp_list = array('register'); //Action白名单

	public function register() {    
		echo "Hello World";
	}

} 
</pre>
<p>-> 浏览器中输出结果</p>
<img src="static/images/1_4_2.jpg" />

<div class="title">说明： </div>
<ul>
<li>框架的运行原理是非常简单的，客户端http请求，通过路由类分析http请求的参数就知道客户需要请求调用的类和类中的方法，然后执行控制器Controller类中的函数</li>
<li>框架的运行不需要view模板层，也不需要数据层，但是一定要有控制器Controller。</li>
</ul>

<div class="footer">版权所有：<a href="">http://initphp.com</a> InitPHP (A PHP Framework) By @Aliyun_zhuli</div>
<script src="static/jquery.js" type="text/javascript"></script>
<link href="static/prettify/prettify.css" rel="stylesheet" type="text/css">
<script src="static/prettify/prettify.js" type="text/javascript"></script>
<script type="text/javascript" src="static/comm.js"></script>
</body>
</html>
